class Solution:
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        """
        result = []
        for i in range(numRows):
            result.append([])
            for j in range(i + 1):
                if j in (0,i):
                    result[i].append(1)
                else:
                    result[i].append(result[i-1][j-1] + result[i-1][j])
        return result

if __name__ == '__main__':
    print(Solution().generate(6))






    """
            Time Complexity = O(n^2)
            Space Complexity = O(1)


            Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.
            In Pascal's triangle, each number is the sum of the two numbers directly above it.

            Example:
            Input: 5
            Output:
            [
                 [1],
                [1,1],
               [1,2,1],
              [1,3,3,1],
             [1,4,6,4,1]
            ]
    """
